package com.optimatch.ui.controler.observers;

import java.util.Observable;
import java.util.Observer;

import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

import com.optimatch.ui.controler.Controler;
import com.optimatch.ui.model.Model;
import com.optimatch.ui.model.beans.Equipe;

public class ModelObserver implements Observer {

	private Controler controler;

	public ModelObserver(Controler controler) {
		this.controler = controler;
	}

	@Override
	public void update(Observable o, Object arg) {
		Model m = (Model) o;
		// Mise à jour liste de contraintes de date
		JTable tableDates = controler.getView().getTabs().getContraintesPanel()
				.getFixerDatePanel().getTable();
		String[] columnNames1 = {"Equipe 1","Equipe 2","Journée choisie","Equipe à domicile"};
		String[][] data1 = m.getProbleme().getMatchFixesTable();
		tableDates.setModel(new DefaultTableModel(data1,columnNames1));
		tableDates.repaint();
		
		// Mise à jour de la liste des contraintes de période
		JTable tablePeriodes = controler.getView().getTabs().getContraintesPanel()
				.getFixerPeriodePanel().getTable();
		String[] columnNames2 = {"Equipe 1","Equipe 2","Journée min","Journée max","Equipe à domicile"};
		String[][] data2 = m.getProbleme().getMatchPeriodesTable();
		tablePeriodes.setModel(new DefaultTableModel(data2,columnNames2));
		tablePeriodes.repaint();
		
		if (arg != null) {
			int modif = (Integer) arg;
			if (modif >= Model.RETRAIT_EQUIPE) {
				int row = modif - Model.RETRAIT_EQUIPE;
				controler.getView().getTabs().getEquipesPanel().getPan_list().getPanList().retirerEquipe(row);
			} else if (modif == Model.AJOUT_EQUIPE) {
				Equipe e = m.getProbleme().getListeEquipes().getLast();
				controler.getView().getTabs().getEquipesPanel().getPan_list().getPanList().ajouterEquipe(e);
			}
		}
	}
}
